1. Field of the Invention
The present invention relates to the field of printing and in particular, to systems and methods for memory management for rasterization.
2. Description of Related Art
Document processing software allows users to view, edit, process, and store documents conveniently. Pages in a document may be displayed on screen exactly as they would appear in print. However, before the document can be printed, pages in the document are often described in a page description language (“PDL”). As used in this document PDL's may include PostScript, Adobe PDF, HP PCL, Microsoft XPS, and variants thereof as well as any other languages used to describe pages in a document. A PDL description of a document provides a high-level description of each page in a document. This PDL description is often translated to a series of lower-level printer-specific commands when the document is being printed. The process of translation from a PDL description of a document to a lower-level description that may be used to place marks on a print medium is termed rasterization.
The translation process from PDL to lower-level printer-specific commands may be complex and depend on the features and capabilities offered by a particular printer. Flexible and portable general-purpose schemes to translate PDL descriptions of documents to printer-specific commands may allow for the optimization of printer performance based on available memory, desired print speed, and other cost and performance criteria.
Traditionally, memory in printing systems has been organized in two distinct pools comprising the display list memory and the frame buffer memory. Display list memory typically holds display list objects for rasterization, while the frame buffer memory typically holds bitmapped data specifying marks to be made on a printed page. The use of separate memory pools prevents the use of display list memory for frame buffer purposes, and vice versa. Print failures can occur due to insufficient memory in either pool. In such situations, there may be sufficient extra memory in the one pool, but the memory is unavailable for use in the other memory pool because of the separate nature of the two pools. Moreover, the use of separate memory management routines to manage display list and frame buffer memory pools may make it difficult to modify and maintain the code used to manage memory across a product family because different strategies and optimizations may be used in individual products. For example, when display list memory is exhausted, one product may trigger pre-rasterization, whereas another product may swap display list memory to disk. The lack of uniformity and the often disparate assortment of memory management routines implemented greatly increases the difficulty of rolling out updates, and improving functionality and performance.
Thus, there is a need for systems and methods to manage memory on printers for rasterization that would allow a seamless upgrade path, while providing additional optimizations.